home *** CD-ROM | disk | FTP | other *** search
/ Dr. Windows 3 / dr win3.zip / dr win3 / PROGRAMR / VLIB200.ZIP / DIALOGS.C < prev    next >
C/C++ Source or Header  |  1993-09-13  |  10KB  |  394 lines

  1. /****************************************************************************
  2.  
  3.     PROGRAM:    Vlibdemo.exe
  4.  
  5.     PURPOSE:    To demonstrate the usage of Visualib(TM) functions.
  6.     
  7.     PROVIDER:   Visual Technology, Co.
  8.                 P.O.Box 901-413
  9.                 Kansas City, MO 64190
  10.                 Tel. (219) 289-0235
  11.                 Fax. (816) 746-6618
  12.     
  13.     DATE:        May, 1993
  14.  
  15. ****************************************************************************/
  16.  
  17. #include <windows.h>
  18. #include <stdio.h>
  19. #include "visualib.h"
  20. #include "dialogs.h"
  21.  
  22. extern HINSTANCE    hInst;
  23. static POINT3D    p3;
  24. static POINT2D    p2;
  25.  
  26. BINARY DlgInputPoint3D (HWND hdlg, UINT msg, WPARAM wp, LPARAM lp)
  27. {
  28.     char    buf[20];
  29.     real    x;
  30.  
  31.     switch (msg) {
  32.         case WM_INITDIALOG:
  33.             sprintf (buf, "%.3f", (real) p3.x);
  34.             SetDlgItemText (hdlg, XCOORD, buf);
  35.             sprintf (buf, "%.3f", (real) p3.y);
  36.             SetDlgItemText (hdlg, YCOORD, buf);
  37.             sprintf (buf, "%.3f", (real) p3.z);
  38.             SetDlgItemText (hdlg, ZCOORD, buf);
  39.             return (TRUE);
  40.         case WM_COMMAND:
  41.             switch (wp) {
  42.                 case IDOK:
  43.                     GetDlgItemText (hdlg, XCOORD, buf, 20);
  44.                     if (sscanf (buf, "%f", &x))
  45.                         p3.x = x;
  46.                     GetDlgItemText (hdlg, YCOORD, buf, 20);
  47.                     if (sscanf (buf, "%f", &x))
  48.                         p3.y = x;
  49.                     GetDlgItemText (hdlg, ZCOORD, buf, 20);
  50.                     if (sscanf (buf, "%f", &x))
  51.                         p3.z = x;
  52.                     EndDialog (hdlg, TRUE);
  53.                     return (TRUE);
  54.  
  55.                 case IDCANCEL:
  56.                     EndDialog (hdlg, TRUE);
  57.                     break;
  58.             }
  59.             break;
  60.     }
  61.     return (FALSE);                  /* Didn't process a message    */
  62. }
  63.  
  64. BINARY    InputPoint3D (LPPOINT3D p)
  65. {
  66.     FARPROC    lpProc;
  67.     BOOL    flag;
  68.     
  69.     p3 = *p;
  70.     lpProc = MakeProcInstance (DlgInputPoint3D, hInst);
  71.     flag = DialogBox (hInst, "DLGSETPOINT3D", GetFocus (), lpProc) > 0;
  72.     if (flag)
  73.         *p = p3;
  74.     FreeProcInstance (lpProc);
  75.     return (flag);
  76. }
  77.  
  78. BINARY DlgInputPoint2D (HWND hdlg, UINT msg, WPARAM wp, LPARAM lp)
  79. {
  80.     char    buf[20];
  81.     real    x;
  82.  
  83.     switch (msg) {
  84.         case WM_INITDIALOG:
  85.             sprintf (buf, "%.3f", (real) p2.x);
  86.             SetDlgItemText (hdlg, XCOORD, buf);
  87.             sprintf (buf, "%.3f", (real) p2.y);
  88.             SetDlgItemText (hdlg, YCOORD, buf);
  89.             return (TRUE);
  90.         case WM_COMMAND:
  91.             switch (wp) {
  92.                 case IDOK:
  93.                     GetDlgItemText (hdlg, XCOORD, buf, 20);
  94.                     if (sscanf (buf, "%f", &x))
  95.                         p2.x = x;
  96.                     GetDlgItemText (hdlg, YCOORD, buf, 20);
  97.                     if (sscanf (buf, "%f", &x))
  98.                         p2.y = x;
  99.                     EndDialog (hdlg, TRUE);
  100.                     return (TRUE);
  101.  
  102.                 case IDCANCEL:
  103.                     EndDialog (hdlg, TRUE);
  104.                     break;
  105.             }
  106.             break;
  107.     }
  108.     return (FALSE);                  /* Didn't process a message    */
  109. }
  110.  
  111. BINARY    InputPoint2D (LPPOINT2D p)
  112. {
  113.     FARPROC    lpProc;
  114.     BOOL    flag;
  115.     
  116.     p2 = *p;
  117.     lpProc = MakeProcInstance (DlgInputPoint2D, hInst);
  118.     flag = DialogBox (hInst, "DLGSETPOINT2D", GetFocus (), lpProc) > 0;
  119.     if (flag)
  120.         *p = p2;
  121.     FreeProcInstance (lpProc);
  122.     return (flag);
  123. }
  124.  
  125. BINARY    DlgLightSetup (HWND hdlg, UINT msg, WPARAM wp, LPARAM lp)
  126. {
  127.     char    buf[20];
  128.     real    x;
  129.     int lighton;
  130.     COLORREF color;
  131.     VECTOR3 loc, dir;
  132.  
  133.     switch (msg) {
  134.         case WM_INITDIALOG:
  135.             ShadingParameter (VL_CURRENT, VL_LIGHTLOCATION, TRUE, loc);
  136.             ShadingParameter (VL_CURRENT, VL_LIGHTDIRECTION, TRUE, dir);
  137.             lighton = SwitchLight (VL_CURRENT, VL_INQUIRE);
  138.             
  139.             sprintf (buf, "%.3f", (real) loc[0]);
  140.             SetDlgItemText (hdlg, LIGHTLOCX, buf);
  141.             sprintf (buf, "%.3f", (real) loc[1]);
  142.             SetDlgItemText (hdlg, LIGHTLOCY, buf);
  143.             sprintf (buf, "%.3f", (real) loc[2]);
  144.             SetDlgItemText (hdlg, LIGHTLOCZ, buf);
  145.             
  146.             sprintf (buf, "%.3f", (real) dir[0]);
  147.             SetDlgItemText (hdlg, LIGHTDIRX, buf);
  148.             sprintf (buf, "%.3f", (real) dir[1]);
  149.             SetDlgItemText (hdlg, LIGHTDIRY, buf);
  150.             sprintf (buf, "%.3f", (real) dir[2]);
  151.             SetDlgItemText (hdlg, LIGHTDIRZ, buf);
  152.  
  153.             CheckDlgButton (hdlg, LIGHTON, lighton);
  154.             
  155.             return (TRUE);
  156.         case WM_COMMAND:
  157.             switch (wp) {
  158.                 case LIGHTCOLOR:
  159.                     color = ShadingColor
  160.                         (VL_CURRENT, VL_LIGHTCOLOR, VL_INQUIRE);
  161.                     color = SelectColor (color);
  162.                     ShadingColor (VL_CURRENT, VL_LIGHTCOLOR, color);
  163.                     return (TRUE);
  164.             
  165.                 case IDOK:
  166.                     GetDlgItemText (hdlg, LIGHTLOCX, buf, 20);
  167.                     if (sscanf (buf, "%f", &x))
  168.                         loc[0] = x;
  169.                     GetDlgItemText (hdlg, LIGHTLOCY, buf, 20);
  170.                     if (sscanf (buf, "%f", &x))
  171.                         loc[1] = x;
  172.                     GetDlgItemText (hdlg, LIGHTLOCZ, buf, 20);
  173.                     if (sscanf (buf, "%f", &x))
  174.                         loc[2] = x;
  175.                     
  176.                     GetDlgItemText (hdlg, LIGHTDIRX, buf, 20);
  177.                     if (sscanf (buf, "%f", &x))
  178.                         dir[0] = x;
  179.                     GetDlgItemText (hdlg, LIGHTDIRY, buf, 20);
  180.                     if (sscanf (buf, "%f", &x))
  181.                         dir[1] = x;
  182.                     GetDlgItemText (hdlg, LIGHTDIRZ, buf, 20);
  183.                     if (sscanf (buf, "%f", &x))
  184.                         dir[2] = x;
  185.                     
  186.                     lighton = IsDlgButtonChecked (hdlg, LIGHTON);
  187.                     
  188.                     ShadingParameter (VL_CURRENT, VL_LIGHTLOCATION, FALSE, loc);
  189.                     ShadingParameter (VL_CURRENT, VL_LIGHTDIRECTION, FALSE, dir);
  190.                     SwitchLight (VL_CURRENT, lighton);
  191.                     
  192.                     EndDialog (hdlg, TRUE);
  193.                     return (TRUE);
  194.  
  195.                 case IDCANCEL:
  196.                     EndDialog (hdlg, TRUE);
  197.                     break;
  198.             }
  199.             break;
  200.     }
  201.     return (FALSE);                  /* Didn't process a message    */
  202. }
  203.  
  204.  
  205. BINARY DlgMaterial (HWND hdlg, UINT msg, WPARAM wp, LPARAM lp)
  206. {
  207.     COLORREF color;
  208.     
  209.     switch (msg) {
  210.         case WM_INITDIALOG:
  211.             return (TRUE);
  212.             
  213.         case WM_COMMAND:
  214.             switch (wp) {
  215.                 case MATDIFFUSE:
  216.                     color = ShadingColor
  217.                         (VL_CURRENT, VL_MATERIALDIFFUSE, VL_INQUIRE);
  218.                     color = SelectColor (color);
  219.                     ShadingColor (VL_CURRENT, VL_MATERIALDIFFUSE, color);
  220.                     return (TRUE);
  221.                 case MATAMBIENT:
  222.                     color = ShadingColor
  223.                         (VL_CURRENT, VL_MATERIALAMBIENT, VL_INQUIRE);
  224.                     color = SelectColor (color);
  225.                     ShadingColor (VL_CURRENT, VL_MATERIALAMBIENT, color);
  226.                     return (TRUE);
  227.                 case MATSPECULAR:
  228.                     color = ShadingColor
  229.                         (VL_CURRENT, VL_MATERIALSPECULAR, VL_INQUIRE);
  230.                     color = SelectColor (color);
  231.                     ShadingColor (VL_CURRENT, VL_MATERIALSPECULAR, color);
  232.                     return (TRUE);
  233.                 case MATEMISSION:
  234.                     color = ShadingColor
  235.                         (VL_CURRENT, VL_MATERIALEMISSION, VL_INQUIRE);
  236.                     color = SelectColor (color);
  237.                     ShadingColor (VL_CURRENT, VL_MATERIALEMISSION, color);
  238.                     return (TRUE);
  239.             
  240.                 case IDOK:
  241.                     EndDialog (hdlg, TRUE);
  242.                     return (TRUE);
  243.  
  244.                 case IDCANCEL:
  245.                     EndDialog (hdlg, TRUE);
  246.                     break;
  247.             }
  248.             break;
  249.     }
  250.     return (FALSE);                  /* Didn't process a message    */
  251. }
  252.  
  253.  
  254. BINARY    DlgTexture (HWND hdlg, UINT msg, WPARAM wp, LPARAM lp)
  255. {
  256.     static int texture = TEXTURENONE;
  257.     
  258.     switch (msg) {
  259.         case WM_INITDIALOG:
  260.             CheckRadioButton (hdlg, TEXTURENONE, TEXTUREGRANITE, texture);
  261.             return (TRUE);
  262.             
  263.         case WM_COMMAND:
  264.             switch (wp) {
  265.                 case TEXTURENONE:
  266.                 case TEXTUREMARBLE:
  267.                 case TEXTUREWOOD:
  268.                 case TEXTUREGRANITE:
  269.                     texture = wp;
  270.                     CheckRadioButton (hdlg, TEXTURENONE, TEXTUREWOOD, wp);
  271.                     return (TRUE);
  272.  
  273.                 case IDOK:
  274.                     switch (texture) {
  275.                         case TEXTUREMARBLE:
  276.                             SolidTexture (VL_MARBLE);
  277.                             break;
  278.                         case TEXTUREWOOD:
  279.                             SolidTexture (VL_WOODGRAIN);
  280.                             break;
  281.                         case TEXTUREGRANITE:
  282.                             SolidTexture (VL_GRANITE);
  283.                             break;
  284.                         default:
  285.                             SolidTexture (VL_NONE);
  286.                             break;
  287.                     }
  288.                     EndDialog (hdlg, TRUE);
  289.                     return (TRUE);
  290.  
  291.                 case IDCANCEL:
  292.                     EndDialog (hdlg, TRUE);
  293.                     break;
  294.             }
  295.             break;
  296.     }
  297.     return (FALSE);                  /* Didn't process a message    */
  298. }
  299.  
  300. BINARY DlgShading (HWND hdlg, UINT msg, WPARAM wp, LPARAM lp)
  301. {
  302.     static int mode, mbutton;
  303.     
  304.     switch (msg) {
  305.         case WM_INITDIALOG:
  306.             mode = ShadingOption (VL_CURRENT, VL_SHADINGMETHOD, VL_INQUIRE);
  307.             switch (mode){
  308.                 case VL_WIREFRAME:
  309.                     mbutton = WIREFRAME;
  310.                     break;
  311.                 case VL_SOLIDFILL:
  312.                     mbutton = SOLIDFILL;
  313.                     break;
  314.                 case VL_FLATSHADE:
  315.                     mbutton = FLATSHADING;
  316.                     break;
  317.                 case VL_GOURAUDSHADE:
  318.                     mbutton